using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using Microsoft.ApplicationBlocks.Data;

namespace RC.ControlAcceso.BaseDatos
{
    public class CATipoHorarioBD : TablaBase
    {
        #region Variables
        private int mIdTipoHorario;
        private string mDescripcion;
        private bool _estaActivo;
        #endregion

        #region Propiedades
        public int IdTipoHorario
        {
            get { return mIdTipoHorario; }
            set { mIdTipoHorario = value; }
        }
        public string Descripcion
        {
            get { return mDescripcion; }
            set { mDescripcion = value; }
        }
        public bool EstaActivo
        {
            get { return _estaActivo; }
            set { _estaActivo = value; }
        }
        #endregion

        #region Constructores
        public CATipoHorarioBD()
        {
            ValoresIniciales();
        }
        private void ValoresIniciales()
        {
            mIdTipoHorario = -1;
            EstaActivo = true;
            Descripcion = "";
        }
        public CATipoHorarioBD(int pIdTipoHorario)
        {
            ValoresIniciales();
            mIdTipoHorario = pIdTipoHorario;
            Editar();
        }
        #endregion

        #region Funciones
        protected override void AsignarSP()
        {
            SPInsertar = "CATipoHorarioInsertar";
            SPSeleccionar = "CATipoHorarioSeleccionar";
            SPEditar = "CATipoHorarioEditar";
            SPEliminar = "CATipoHorarioEliminar";
            SPActualizar = "CATipoHorarioActualizar";
            SPRecuperar = "CATipoHorarioRecuperar";
        }
        protected override System.Data.SqlClient.SqlParameter[] AsignaParametros(string pNombreSP)
        {
            SqlParameter[] Param;
            SqlParameter Parametro;
            switch (pNombreSP)
            {
                case "CATipoHorarioEditar":
                    Param = new SqlParameter[1];

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@idTipoHorario";
                    Parametro.SqlDbType = SqlDbType.Int;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = mIdTipoHorario;
                    Param[0] = Parametro;

                    return Param;

                case "CATipoHorarioEliminar":
                    Param = new SqlParameter[1];

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@idTipoHorario";
                    Parametro.SqlDbType = SqlDbType.Int;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = mIdTipoHorario;
                    Param[0] = Parametro;

                    return Param;

                case "CATipoHorarioInsertar":
                case "CATipoHorarioActualizar":
                    Param = new SqlParameter[3];

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@idTipoHorario";
                    Parametro.SqlDbType = SqlDbType.Int;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = mIdTipoHorario;
                    Param[0] = Parametro;

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@Descripcion";
                    Parametro.SqlDbType = SqlDbType.VarChar;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = mDescripcion;
                    Param[1] = Parametro;

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@EstaActivo";
                    Parametro.SqlDbType = SqlDbType.Bit;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = EstaActivo;
                    Param[2] = Parametro;

                    return Param;

                default: return null;
            }
        }
        protected override void AsignarDatos(System.Data.SqlClient.SqlDataReader pDatos)
        {
            mDescripcion = pDatos.GetString(pDatos.GetOrdinal("Descripcion"));

            try
            {
                EstaActivo = pDatos.GetBoolean(pDatos.GetOrdinal("EstaActivo"));
            }
            catch { EstaActivo = true; }
        }
        #endregion
    }
}